// 给定一个大小为m*n的矩阵mat，以对角线遍历的顺序，用一个数组返回这个矩阵的所有元素

// 思路：规律是当x，y的索引和为偶数时从左下到右上遍历，遇到边界需要判断不同的更新逻辑
// 时间复杂度：O(m * n)
// 空间复杂度：O(m * n)，如果算答案数组的，否则是O(1)
function findDiagonalOrder(matrix) {
    let rowLen = matrix.length
    let colLen = matrix[0].length
    let x = 0
    let y = 0
    let count = rowLen * colLen
    let res = []
    for (let i = 0; i < count; i++) {
        console.log(x, y)
        res.push(matrix[x][y])
        if ((x + y) % 2 === 0) {
            // 先判断这个防止越界
            if (y === colLen - 1) {
                x++
            } else if (x === 0) {
                y++
            } else {
                x--
                y++
            }
        } else {
            if (x === rowLen - 1) {
                y++
            } else if (y === 0) {
                x++
            } else {
                x++
                y--
            }
        }
    }
    return res

}

let mat2 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
mat2 = [[1, 2], [3, 4]]

console.log(findDiagonalOrder(mat2));